<?php

/**
 * Заготовка почтового сообщения c данными администратора.
 *
 */
class Backend_Mail_Message extends Kernel_Mail_Message
{
    /**
     * Идентификатор профайла, данные которого нужно подставить в письмо.
     *
     * @var integer
     */
    public $profile;

    /**
     * Конструктор.
     *
     */
    public function __construct($params = array())
    {
        parent::__construct($params);

        if (empty($this->profile))
        {
            trigger_error(get_class($this) . ': no user specified', E_USER_ERROR);
            return;
        }

        // получаем данные из профайла
        $profile = $this->_getProfileData();

        // предаем их в шаблона, прямо в глобальный контекст
        $this->assign($profile);

        $this->to = $this->_to($profile);
    }

    /**
     * Формирует строку получателя сообщения.
     *
     * @return  array   $profile
     * @return  string
     */
    protected function _to($profile)
    {
        return $profile['name'] . ' <' . $profile['email'] . '>';
    }

    /**
     * Возвращает данные профайла.
     *
     * @return  array
     */
     private function _getProfileData()
     {
        $query = 'SELECT
                         `p`.`name`,
                         `s`.`email`
                    FROM
                         `system_admin` `p`
              INNER JOIN
                         `system_subject` `s`
                      ON
                         `s`.`id` = `p`.`subject_id`
                   WHERE
                         `p`.`id` = ' . (int)$this->profile;

        return database::fetchRow($query);
    }
}
